package com.itheima.commons;

import com.itheima.exception.BaseException;
import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//1.定义全局异常处理器类
@Slf4j
@RestControllerAdvice//底层使用AOP动态代理的思想，实现处理controller层所有的异常
                     //此类中的处理异常的方法，具备直接返回处理结果给前端能力
public class GlobalExceptionHandler{

    //2.定义异常的方法：处理整个项目的所有系统异常的方法
    @ExceptionHandler(Exception.class)
    public Result defaultExceptionHandler(Exception e){
        e.printStackTrace(); //建议打印异常信息到控制台，方便后续排查问题
        //3.异常处理逻辑
        // 3.1 记录异常信息
        log.error("服务器异常：{}",e.getMessage());
        // 3.2 通知运维人员+开发人员，紧急修复
        log.info("邮件，微信通知相关人员解决");
        // 3.3 返回异常信息给前端
        return Result.error("请检查您的本地网络是否正常！！请稍后再试！！");
    }



    //4.定义异常的方法：处理整个项目的所有业务异常的方法
    @ExceptionHandler(BaseException.class)
    public Result defaultCommomsHandler(BaseException e){
        //3.异常处理逻辑
        // 3.1 记录异常信息
        log.error("服务器异常：{}",e.getMessage());
        // 3.2 返回异常信息给前端，纠正用户行为
        return Result.error(e.getMessage());
    }
}
